let express = require('express');
let router = express.Router();
let User = require("../model/user.js");
let {genToken} = require("../tool/token.js");

let {
  validateRegParams,
  validateUser,
  validatePhone,
  validateEmail,
} = require("../middleware/user.js");

/* GET users listing. */
// /users
router.get('/', function (req, res, next) {
  res.send('respond with a resource');
});

router.get("/isExistUser",validateUser,function(req,res,next){
  let obj = {
    status: true,
    message: "可以使用的用户名",
  }
  res.json(obj);
})

router.get("/isExistPhone",validatePhone,function(req,res,next){
  let obj = {
    status: true,
    message: "可以使用的手机号",
  }
  res.json(obj);
})

router.get("/isExistEmail",validateEmail,function(req,res,next){
  let obj = {
    status: true,
    message: "可以使用的邮箱",
  }
  res.json(obj);
})

// /users/reg   注册(post  => {user,pwd,phone,email})
// router.post('/reg', validateRegParams)
// router.post('/reg', validateUser);
// router.post('/reg', validatePhone)
// router.post('/reg', validateEmail)
router.post('/reg', validateRegParams, validateUser,validatePhone, validateEmail,function (req, res, next) {


  // 注册之前先添加 用户名 手机号 邮箱
  // 先验证用户名 -> 手机号 -> 邮箱 -> 注册 => 四层嵌套 
  // 解决方法1: async await 配合try... catch
  /* User.findOne({ user: user }).then((info) => {
    console.log("是否存在", info);
    if (!info) {  // 用户名可以用 => 验证手机号
      
    } else {
      let obj = {
        status: false,
        message: "该用户已被注册",
      }
      res.json(obj);
    }

  }).catch(err => {
    let obj = {
      status: false,
      message: "Fail",
      reason: err.message,
    }
    res.json(obj);
  }) */


  // 无脑注册 => 不管用户名 手机号 邮箱是否存在都可以注册 
  User.insertMany(req.body).then((result) => {
    // console.log("注册成功", result);
    let obj = {
      status: true,
      message: "Ok",
    }
    res.json(obj);
  }).catch(err => {
    console.log("注册失败", err);
    let obj = {
      status: false,
      message: "Fail",
      reason: err.message,
    }
    res.json(obj);
  })

});

// /users/login  用户登录(post方式  -> {user,pwd})
router.post("/login",function(req,res,next){
    // 后端接收前端传递的数据
    let body = req.body;
    let {user,pwd} = body;
    if(user&&pwd){
      // 先找用户是否存在
      User.findOne({user:user}).then(info=>{
        console.log("查询成功",info);
        if(info){ // 存在 -> 用户已注册,可以验证密码
          if(pwd === info.pwd){

            // 生成token
            let data = {user:user};
            let token = genToken(data,30*60);

            res.json({
              status:true,
              message:"登陆成功!",
              token:token,   // 后端生成token -> 传递给前端
            })
          }else{
            res.json({
              status:false,
              message:"用户名或密码有误!",
            })
          }
        }else{ // 不存在 => 
          res.json({
            status:false,
            message:"该用户未注册!",
          })
        }
      }).catch(err=>{
        res.json({
          status:false,
          message:err.message,
        })
      })

    }else{
      res.json({
        status:false,
        message:"请传入完整参数",
      })
    }

})

module.exports = router;
